Field of the Invention
The present invention relates to a method for real-time resource consumption control in a distributed computing environment. Furthermore, the present invention relates to a computer program product for executing this method, a computer readable data carrier with the computer program product stored thereon, and a system being developed to carry out the aforementioned method.
Background of the Related Art
Distributed computing environments are typically made up of several systems and resources and consolidate applications for carrying out a specific function across different locations. One example of a distributed computing environment is a SaaS (Software as a Service) environment (being considered as a part of cloud computing), where users subscribe to paid services by a service provider. The service provider monitors the consumption of resources by the users and enforces a limit to the resources users can consume according to what each user has paid for.
An example would be a system offering telephony services, where the users are charged on a monthly basis for the total duration (e.g., minutes) of outgoing calls. A more relevant example is where users prepay for a certain amount of outgoing call duration and the telephony service provider enforces this time limit by monitoring whether a user trying to place a call has already reached the prepaid limit.
In a collaborative SaaS environment the services might be offered to user groups rather than individual users, and the corresponding resources (e.g., outgoing call duration for the example above) can be consumed by any user in the group.
An example would be a collaborative application such as a file sharing service, where users in a group can exchange files by uploading them to a repository which is accessible by all the users in the group. The consumable resource in this example would be the amount of storage space allocated to the group. All users in a group can upload files to the repository and therefore consume a portion of the shared storage space. The service provider has to monitor the used storage space in the group and enforce that no user can upload more files than the available storage space in the group.
In a large SaaS environment, user requests are distributed to a multitude of server instances in a manner where different users in a group may be served by different instances of the server which provides a given service. Such an environment is illustrated in FIG. 1, wherein Sx, i.e., (S1-Sn) represents a multitude of server instances providing a certain service/feature which users in a group are paying for. Consumers, i.e., members of the group are accessing this cloud service, resulting in different users in a group being served by different instances of the server which provides the given service. The servers Sx are competing to consume a shared resource, thus causing delay in the decision process. Optionally, a load balancer LB may be used when consumers are accessing the service. A load balancer is a device that acts as a reverse proxy and distributes network or application traffic across a number of server instances. Load balancers are used to increase capacity (concurrent users) and reliability of applications.
It is, however, clear for the skilled worker that the present invention is not restricted to SaaS applications but can be used in other distributed computing environments as well.
When considering the file sharing service described in the example above, where different servers receive file upload requests by the users of a group, the enforcement of the storage space limit allocated to the group requires the consistent update of the group's used storage counter across all server instances by the service provider.
In another example, real time communication (RTC) services such as voice/video and web collaboration are offered to groups of users, and are charged by the service provider based on the total monthly duration of RTC sessions within the group, with a limit on the maximum duration per month. The consumption of this resource changes at such a rate that maintaining a consistent count across a large number of server instances would introduce a delay beyond what is considered acceptable for a real time voice/video service.
U.S. Pat. No. 5,579,222 discloses a distributed license administration system using a local policy server to communicate with a license server and control execution of computer programs. One computer, acting as a license server, identifies the nodes currently using the licensed software, handles the license conditions and checks whether or not these conditions are still met upon adding a new node. Each node maintains a policy server database, which specifies the license conditions for this node. A policy server daemon communicates with the license server, interfaces with the database and decides whether to grant or deny access to the licensed software.
In U.S. Pat. No. 7,849,019, floating licenses are managed by a central license server. This server assigns a number of licenses to secondary license managers, which in turn grant licenses to clients as requested. Each secondary server counts the licenses granted and released during a period of time and sends the values to the central license server to synchronize this server. The central server adjusts the number of licenses available at the secondary servers. The method allows to temporarily exceed the total number of available licenses.
The cited state of the art solutions show the problems that they either do not consider the lack of real-time responsiveness when a large amount of users compete for resources provided by a multitude of server instances or do need excessive synchronization between instances.